load("@rules_cc//cc:defs.bzl", "cc_proto_library")
load("@rules_java//java:defs.bzl", "java_proto_library")
load("@rules_pkg//:mappings.bzl", "pkg_filegroup", "pkg_files", "strip_prefix")
load("@rules_proto//proto:defs.bzl", "proto_library")
load("//:protobuf.bzl", "internal_php_proto_library", "internal_py_proto_library")

################################################################################
# Benchmark Protos
################################################################################

proto_library(
    name = "benchmarks_proto",
    srcs = [
        "benchmarks.proto",
    ],
    strip_import_prefix = "/benchmarks",
    visibility = [
        "//benchmarks:__subpackages__",
    ],
)

cc_proto_library(
    name = "benchmarks_cc_proto",
    visibility = [
        "//benchmarks:__subpackages__",
    ],
    deps = [
        "benchmarks_proto",
    ],
)

java_proto_library(
    name = "benchmarks_java_proto",
    visibility = [
        "//benchmarks:__subpackages__",
    ],
    deps = [
        "benchmarks_proto",
    ],
)

internal_php_proto_library(
    name = "benchmarks_php_proto",
    srcs = ["benchmarks.proto"],
    outs = [
        "Benchmarks/BenchmarkDataset.php",
        "GPBMetadata/Benchmarks.php",
    ],
    visibility = [
        "//benchmarks:__subpackages__",
    ],
)

internal_py_proto_library(
    name = "benchmarks_py_proto",
    srcs = ["benchmarks.proto"],
    visibility = [
        "//benchmarks:__subpackages__",
    ],
)

proto_library(
    name = "google_size_proto",
    srcs = [
        "google_size.proto",
    ],
    strip_import_prefix = "/benchmarks",
    visibility = [
        "//benchmarks:__subpackages__",
    ],
)

cc_proto_library(
    name = "google_size_cc_proto",
    visibility = [
        "//benchmarks:__subpackages__",
    ],
    deps = [
        "google_size_proto",
    ],
)

java_proto_library(
    name = "google_size_java_proto",
    visibility = [
        "//benchmarks:__subpackages__",
    ],
    deps = [
        "google_size_proto",
    ],
)

################################################################################
# Distribution files
################################################################################

pkg_files(
    name = "dist_files",
    srcs = glob(["*"]),
    strip_prefix = strip_prefix.from_root(""),
)

# Convenience filegroup for all files that should be packaged.
pkg_filegroup(
    name = "all_dist_files",
    srcs = [
        ":dist_files",
        "//benchmarks/cpp:dist_files",
        "//benchmarks/datasets:dist_files",  # not in autotools dist
        "//benchmarks/datasets/google_message1/proto2:dist_files",
        "//benchmarks/datasets/google_message1/proto3:dist_files",
        "//benchmarks/datasets/google_message2:dist_files",
        "//benchmarks/datasets/google_message3:dist_files",
        "//benchmarks/datasets/google_message4:dist_files",
        "//benchmarks/java:dist_files",
        "//benchmarks/php:dist_files",
        "//benchmarks/python:dist_files",
        "//benchmarks/util:dist_files",
    ],
    visibility = ["//pkg:__pkg__"],
)
